/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package ejb.common;

import common.Stato;
import entity.Supervisore;
import facade.SupervisoreFacade;
import java.util.List;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;

/**
 *
 * @author Antonio
 */
@Stateless
public class SupervisoreManager implements SupervisoreManagerLocal {

    @PersistenceContext(unitName = "E-Market-ejbPU")
    private EntityManager em;
    private SupervisoreFacade supervisoreFacade;
    private Stato stato;

    // Add business logic below. (Right-click in editor and choose
    // "Insert Code > Add Business Method")
    @Override
    public void creaSupervisore(Supervisore sp) {

        if (sp == null) {

            return;
        }

        Query q = em.createNamedQuery("persona.cercaPerCodiceFiscale");
        q.setParameter(1, sp.getCodiceFiscale());

        try {

            if (q.getSingleResult() != null) {

                return;
            }
        } catch (NullPointerException e) {

            supervisoreFacade.create(sp);
        }

    }// creaSupervisore

    @Override
    public void attivaSupervisore(Supervisore sp) {

        if (sp == null) {

            return;
        }

        if (sp.getAccount().getStato().equals(stato.Attivo) || sp.getAccount().getStato().equals(stato.Bannato)) {

            return;
        }
        sp.getAccount().setStato(stato.Attivo);
    }// attivaSupervisore

    @Override
    public void bloccaSupervisore(Supervisore sp) {

        if (sp == null) {

            return;
        }

        if (sp.getAccount().getStato().equals(stato.Bloccato) || sp.getAccount().getStato().equals(stato.Bannato)) {

            return;
        }
        sp.getAccount().setStato(stato.Bloccato);

    }// bloccaSupervisore

    @Override
    public void bannaSupervisore(Supervisore sp) {

        if (sp == null) {

            return;
        }

        if (sp.getAccount().getStato().equals(stato.Bannato)) {

            return;
        }
        sp.getAccount().setStato(stato.Bannato);
    }// bannaSupervisore

    public void persist(Object object) {
        em.persist(object);
    }
}
